﻿using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Text;

namespace SuperX.Common
{
    // 
    internal interface IExtensible
    {
        // 
       
        ConcurrentDictionary<string, object> ExtensionProperties { get; set; }

        // 
        ConcurrentDictionary<string, Delegate> ExtensionMethods { get; set; }

        // 
        void AddProperty(string propertyName, object value);

        // 
        void RemoveProperty(string propertyName);

        // 
        void HasProperty(string propertyName);

        // 
        object GetProperty(string propertyName);

        // 
        bool SetProperty(string propertyName, object value);
    }
}
